package com.zhongpengcheng.blog.util;

import cn.hutool.extra.cglib.CglibUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;

import java.util.List;
import java.util.function.Supplier;

/**
 * MybatisPlus 分页工具类
 * @author ZhongPengCheng
 * @version 1.0
 * @since 2021-12-04 22:38:00
 */
public class PageUtil {
    /**
     * 将DO分页对象转换为DTO分页对象
     * @param page DO分页对象
     * @param noArgsConstructor DTO对象的无参构造函数
     * @param <P> DO类型
     * @param <R> DTO类型
     * @return DTO分页对象
     */
    public static  <P, R> Page<R> toDTO(Page<P> page, Supplier<R> noArgsConstructor) {
        Page<R> pageDto = PageDTO.of(page.getCurrent(), page.getSize(), page.getTotal(), page.searchCount());
        List<P> records = page.getRecords();
        return pageDto.setRecords(CglibUtil.copyList(records, noArgsConstructor));
    }
}
